﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.ComponentModel;
using System.ServiceModel;

using SsrsRenderStudio.Shared;
using SsrsRenderStudio.Wcf.DataContract;
using SsrsRenderStudio.KnownTypesAndModels;

namespace SsrsRenderStudio.Wcf.ServiceContract
{
    #region User Service

    [ServiceContract(SessionMode = SessionMode.Allowed)]
    public interface IRenderStudioUserService
    {
        [OperationContract]
        ExecutionResult PrintReport(ExecutionContext context);
        [OperationContract]
        ExecutionResult EmailReport(ExecutionContext context);
        [OperationContract]
        bool ReprocessReport(Guid id);
        
    }

    #endregion

    #region System Service

    [ServiceContract(SessionMode = SessionMode.Allowed)]
    public interface IRenderStudioSystemService
    {
        [OperationContract]
        int GetServerStatus();

        [OperationContract]
        ApplicationConfigResponse GetApplicationConfiguration();

        [OperationContract]
        SmtpConfigurationResponse GetSmtpConfiguration();

        [OperationContract]
        LoggingConfigurationsResponse GetAllLoggingConfigurations();

        [OperationContract]
        EndpointConfigurationsResponse GetAllEndpointConfigurations();

        [OperationContract]
        RenderStudioClientsResponse GetAllRenderStudioClients();

        [OperationContract]
        RenderStudioServersResponse GetAllRenderStudioServers();

        [OperationContract]
        ReportServersResponse GetAllReportServers();
        
        [OperationContract]
        ReportsResponse GetAllReports();

        [OperationContract]
        PrintersResponse GetAllPrinters();
    }

    #endregion
}
